热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

delphi7点击cxgrid后新增数据时报错?

delphi7点击cxgrid后新增数据时报错?报‘datasetnotineditorinsertmode’,请大家帮个忙,我怎么查也查不出错在哪里,不点击cxgrid,新增数据就
delphi 7 点击cxgrid后 新增数据时报错?报‘dataset not in edit or insert mode’,请大家帮个忙,我怎么查也查不出错在哪里,不点击cxgrid,新增数据就没问题!先谢谢大家!

代码如下:

procedure TForm1.btaddClick(Sender: TObject);
var tmpxmdh,tmpajh,tmpqx,tmpschnd:string;
   sy,sm,sd:word;
begin
 if btadd.Caption='增加' then
   begin
     pub_bgqx:=prvbgqx;
     pub_class_id:=prvflh;
     DecodeDate(now,sy,sm,sd);
     with adod_wjj do
      begin
       close;
       commandtext:='select * from wscl_wsda_file order by wjjh desc';
       open;
      end;
      adod_wjj.Append;
      cxdbtextedit11.SetFocus;
      cxdbtextedit13.DataBinding.DataSource.DataSet.FieldByName('ys').AsInteger:=0;
      cxdbtextedit14.DataBinding.DataSource.DataSet.FieldByName('wjfs').AsInteger:=1;
      cxdbcombobox6.DataBinding.DataSource.DataSet.FieldByName('bzbm').AsString:=prvbzbm;
      cxdbcombobox7.DataBinding.DataSource.DataSet.FieldByName('ztlx').AsString:=prvztlx;
      cxdbcombobox9.DataBinding.DataSource.DataSet.FieldByName('mj').AsString:=prvmj;
      cxdbtextedit19.DataBinding.DataSource.DataSet.FieldByName('cfwz').AsString:=prvcfwz;
      cxdbtextedit18.DataBinding.DataSource.DataSet.FieldByName('wjhh').AsString:=prvhh;
      cxdbtextedit28.DataBinding.DataSource.DataSet.FieldByName('flh').AsString:=prvflh;
      cxdbtextedit17.DataBinding.DataSource.DataSet.FieldByName('wjnd').AsString:=prvwjnd;
      cxdbcombobox8.DataBinding.DataSource.DataSet.FieldByName('bgqx').AsString:=pub_bgqx;
      cxdbdateedit6.DataBinding.DataSource.DataSet.FieldByName('gdsj').value:=date;
      btadd.Caption:='保存';
      btmod.Caption:='还原';
   end
 else
  begin
       if ((trim(cxdbtextedit17.Text)='') or (trim(cxdbcombobox8.Text)='') or (trim(cxdbtextedit29.Text)='')) then
        begin
         MessageBox(0, '文件保管期限、文件年度、文件时间不能为空!', '操作提示:', MB_ICONINFORMATION + MB_OK);
         exit;
        end;
       prvbzbm:=trim(cxdbcombobox6.Text);
       prvflh:=trim(cxdbtextedit28.Text);
       prvwjnd:=trim(cxdbtextedit17.Text);
       prvhh:=trim(cxdbtextedit18.Text);
       prvztlx:=trim(cxdbcombobox7.Text);
       prvbgqx:=trim(cxdbcombobox8.Text);
       prvmj:=trim(cxdbcombobox9.Text);
       prvcfwz:=trim(cxdbtextedit19.Text);
       with adod_wjj do
        begin
         fieldbyname('bzbm').Value:=trim(cxdbcombobox6.Text);
         fieldbyname('ys').Value:=strtoint(trim(cxdbtextedit13.Text));
         fieldbyname('wjfs').Value:=strtoint(trim(cxdbtextedit14.Text));
         fieldbyname('flh').Value:=trim(cxdbtextedit28.Text);
         fieldbyname('wjnd').Value:=trim(cxdbtextedit17.Text);
         fieldbyname('wjhh').Value:=trim(cxdbtextedit18.Text);
         fieldbyname('cfwz').Value:=trim(cxdbtextedit19.Text);
         tmpschnd:=trim(cxdbtextedit17.Text);
         fieldbyname('ztlx').Value:=trim(cxdbcombobox7.Text);
         fieldbyname('gdsj').Value:=cxdbdateedit6.date;
         fieldbyname('bgqx').Value:=trim(cxdbcombobox8.Text);
         fieldbyname('mj').Value:=trim(cxdbcombobox9.Text);
         tmpqx:=trim(cxdbcombobox8.Text);
         fieldbyname('gdbz').Value:='未归档';
         fieldbyname('operdate').Value:=now;
         post;
        end;
       with adod_wjj do
        begin
         close;
         commandtext:='select * from wscl_wsda_file where wjnd=:tnd and bgqx=:tqx order by bgqx,wjjh desc';
         parameters[0].DataType:=ftstring; parameters[1].DataType:=ftstring;
         parameters[0].Value:=tmpschnd; parameters[1].Value:=tmpqx;
         open;
        end;
   btadd.Caption:='增加';
   btmod.Caption:='修改';
  end;
end;


procedure TForm1.cxGrid3DBTableView1CellClick(
  Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  with adod_wjj do
   begin
    prvbzbm:=fieldbyname('bzbm').AsString;
    prvflh:=fieldbyname('flh').AsString;
    prvwjnd:=fieldbyname('wjnd').AsString;
    prvhh:=fieldbyname('wjhh').AsString;
    prvztlx:=fieldbyname('ztlx').AsString;
    prvbgqx:=fieldbyname('bgqx').AsString;
    prvmj:=fieldbyname('mj').AsString;
    prvcfwz:=fieldbyname('cfwz').AsString;
    prvbgqxcode:=fieldbyname('bgqxcode').AsString;
   end;
end;

12 个解决方案

#1


提示是你保存的时候ADO没有处于 增加或修改的状态。所以会有异常,
你可以在最前面加一名:

if not (adod_wjj.State in [dsEdit,dsInsert]) then exit;
就不会有这个错误了。

#2


首先确定adod_wjj是不是grid所绑定的数据集

再有,你的赋值过程也太乱了,直接用adod_wjj.FieldByName去赋值,干吗还通过grid一系列属性去赋值

再有,当不满足if btadd.Caption='增加' then 条件进入else后,adod_wjj根本没有Edit,就去为字段赋值了,这样肯定出错

如果上面问题都不是,就逐步跟踪一下,看看在那句出错了

#3


mrwangfei 我是在新增时报的错,不是保存时,只要不点击cxgrid就没问

#4


在赋值时报的错,但这些语句,在没点击cxgrid时,都没问题
cxdbtextedit13.DataBinding.DataSource.DataSet.FieldByName('ys').AsInteger:=0; 
      cxdbtextedit14.DataBinding.DataSource.DataSet.FieldByName('wjfs').AsInteger:=1; 
      cxdbcombobox6.DataBinding.DataSource.DataSet.FieldByName('bzbm').AsString:=prvbzbm; 
      cxdbcombobox7.DataBinding.DataSource.DataSet.FieldByName('ztlx').AsString:=prvztlx;

#5


      cxdbtextedit13.DataBinding.DataSource.DataSet.FieldByName('ys').AsInteger:=0; 
      cxdbtextedit14.DataBinding.DataSource.DataSet.FieldByName('wjfs').AsInteger:=1; 
      cxdbcombobox6.DataBinding.DataSource.DataSet.FieldByName('bzbm').AsString:=prvbzbm; 
      cxdbcombobox7.DataBinding.DataSource.DataSet.FieldByName('ztlx').AsString:=prvztlx; 
      cxdbcombobox9.DataBinding.DataSource.DataSet.FieldByName('mj').AsString:=prvmj; 
      cxdbtextedit19.DataBinding.DataSource.DataSet.FieldByName('cfwz').AsString:=prvcfwz; 
      cxdbtextedit18.DataBinding.DataSource.DataSet.FieldByName('wjhh').AsString:=prvhh; 
      cxdbtextedit28.DataBinding.DataSource.DataSet.FieldByName('flh').AsString:=prvflh; 
      cxdbtextedit17.DataBinding.DataSource.DataSet.FieldByName('wjnd').AsString:=prvwjnd; 
      cxdbcombobox8.DataBinding.DataSource.DataSet.FieldByName('bgqx').AsString:=pub_bgqx; 
      cxdbdateedit6.DataBinding.DataSource.DataSet.FieldByName('gdsj').value:=date; 


这些只设一次就行啦

#6


也就是说,设了数据源就行了,不用赋值的

#7


to : dinoalex 
      cxdbtextedit13.DataBinding.DataSource.DataSet.FieldByName('ys').AsInteger:=0; 
      cxdbtextedit14.DataBinding.DataSource.DataSet.FieldByName('wjfs').AsInteger:=1; 
      cxdbcombobox6.DataBinding.DataSource.DataSet.FieldByName('bzbm').AsString:=prvbzbm; 
      cxdbcombobox7.DataBinding.DataSource.DataSet.FieldByName('ztlx').AsString:=prvztlx; 
      cxdbcombobox9.DataBinding.DataSource.DataSet.FieldByName('mj').AsString:=prvmj; 
      cxdbtextedit19.DataBinding.DataSource.DataSet.FieldByName('cfwz').AsString:=prvcfwz; 
      cxdbtextedit18.DataBinding.DataSource.DataSet.FieldByName('wjhh').AsString:=prvhh; 
      cxdbtextedit28.DataBinding.DataSource.DataSet.FieldByName('flh').AsString:=prvflh; 
      cxdbtextedit17.DataBinding.DataSource.DataSet.FieldByName('wjnd').AsString:=prvwjnd; 
      cxdbcombobox8.DataBinding.DataSource.DataSet.FieldByName('bgqx').AsString:=pub_bgqx; 
      cxdbdateedit6.DataBinding.DataSource.DataSet.FieldByName('gdsj').value:=date; 


这些只设一次就行啦

是什么意思?请指明

现在问题是在新增数据赋值时报错!

#8


那就这样就行了,看来要你改赋值的形式你是不干的。
procedure TForm1.cxGrid3DBTableView1CellClick( 
  Sender: TcxCustomGridTableView; 
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; 
  AShift: TShiftState; var AHandled: Boolean); 
begin 
  with adod_wjj do 
  begin 
    insert;//或 edit;
    prvbzbm:=fieldbyname('bzbm').AsString; 
    prvflh:=fieldbyname('flh').AsString; 
    prvwjnd:=fieldbyname('wjnd').AsString; 
    prvhh:=fieldbyname('wjhh').AsString; 
    prvztlx:=fieldbyname('ztlx').AsString; 
    prvbgqx:=fieldbyname('bgqx').AsString; 
    prvmj:=fieldbyname('mj').AsString; 
    prvcfwz:=fieldbyname('cfwz').AsString; 
    prvbgqxcode:=fieldbyname('bgqxcode').AsString; 
    Post;//保存,
  end; 
end;

#9


to mrwangfei:
以下是取值语句,不是给数据库赋值
procedure TForm1.cxGrid3DBTableView1CellClick( 
  Sender: TcxCustomGridTableView; 
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; 
  AShift: TShiftState; var AHandled: Boolean); 
begin 
  with adod_wjj do 
  begin 
    insert;//或 edit; 
    prvbzbm:=fieldbyname('bzbm').AsString; 
    prvflh:=fieldbyname('flh').AsString; 
    prvwjnd:=fieldbyname('wjnd').AsString; 
    prvhh:=fieldbyname('wjhh').AsString; 
    prvztlx:=fieldbyname('ztlx').AsString; 
    prvbgqx:=fieldbyname('bgqx').AsString; 
    prvmj:=fieldbyname('mj').AsString; 
    prvcfwz:=fieldbyname('cfwz').AsString; 
    prvbgqxcode:=fieldbyname('bgqxcode').AsString; 
    Post;//保存, 
  end; 
end; 

#10


 终于找出问题了,是‘cxdbtextedit11.SetFocus;’出问题,把该语句注消掉,就没问题,为什么会这样呢??请大家解释下

#11


 终于找出问题了,我用的是 tspeedbutton按钮,换成tbutton就没问题了,这问题折腾了我整整一天。
 为什么会这样呢?难道在speedbutton按钮中不能用 setfocus语句???

 

#12


DataBinding 是什么意思

推荐阅读
  • WPF项目学习.一
    WPF项目搭建版权声明:本文为博主初学经验,未经博主允许不得转载。一、前言记录在学习与制作WPF过程中遇到的解决方案。使用MVVM的优点是数据和视图分离,双向绑定,低耦合,可重用行 ... [详细]
  • 在处理 GridView 中的行记录时,有时需要动态地添加或删除行,而无需对数据库中的实际数据进行任何更改。本文介绍了如何实现这一功能,确保操作仅限于前端展示层面,而不影响后端数据库的完整性。通过这种方法,用户可以在不修改数据库记录的情况下,灵活地管理 GridView 中的数据展示。 ... [详细]
  • C#中实现高效UDP数据传输技术
    C#中实现高效UDP数据传输技术 ... [详细]
  • VB.net 进程通信中FindWindow、FindWindowEX、SendMessage函数的理解
    目录一、代码背景二、主要工具三、函数解析1、FindWindow:2、FindWindowEx:3、SendMessage: ... [详细]
  • 开发技巧:在Interface Builder中实现UIButton文本居中对齐的方法与步骤
    开发技巧:在Interface Builder中实现UIButton文本居中对齐的方法与步骤 ... [详细]
  • 本文总结了JavaScript的核心知识点和实用技巧,涵盖了变量声明、DOM操作、事件处理等重要方面。例如,通过`event.srcElement`获取触发事件的元素,并使用`alert`显示其HTML结构;利用`innerText`和`innerHTML`属性分别设置和获取文本内容及HTML内容。此外,还介绍了如何在表单中动态生成和操作``元素,以便更好地处理用户输入。这些技巧对于提升前端开发效率和代码质量具有重要意义。 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • Flutter 2.* 路由管理详解
    本文详细介绍了 Flutter 2.* 中的路由管理机制,包括路由的基本概念、MaterialPageRoute 的使用、Navigator 的操作方法、路由传值、命名路由及其注册、路由钩子等。 ... [详细]
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
  • 微信小程序实现类似微博的无限回复功能,内置云开发数据库支持
    本文详细介绍了如何利用微信小程序实现类似于微博的无限回复功能,并充分利用了微信云开发的数据库支持。文中不仅提供了关键代码片段,还包含了完整的页面代码,方便开发者按需使用。此外,HTML页面中包含了一些示例图片,开发者可以根据个人喜好进行替换。文章还将展示详细的数据库结构设计,帮助读者更好地理解和实现这一功能。 ... [详细]
  • 开发了一款Windows API查看器,支持VBA语句导出,并提供超过两万个API的MSDN链接查询功能。
    开发了一款名为Windows API Viewer的工具,支持导出VBA语句,并集成了超过两万个API的MSDN链接查询功能,方便用户快速查找和使用相关API信息。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 深入解析 Android 选择器与形状绘制技术
    本文深入探讨了 Android 中选择器(Selector)与形状绘制(Shape Drawing)技术的应用与实现。重点分析了 `Selector` 的 `item` 元素,其中包括 `android:drawable` 属性的使用方法及其在不同状态下的表现。此外,还详细介绍了如何通过 XML 定义复杂的形状和渐变效果,以提升 UI 设计的灵活性和美观性。 ... [详细]
author-avatar
yuanguo374
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有